package com.naiterui.ehp.bs.pharmacist.service;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

import com.naiterui.ehp.bp.bo.pharmacist.PharmacistInfoBO;
import com.naiterui.ehp.bp.support.exception.BusinessException;
import com.naiterui.ehp.bs.pharmacist.entity.Pharmacist;
import com.naiterui.ehp.bs.pharmacist.vo.recommend.PharmacistVO;
import com.naiterui.ehp.bs.pharmacist.vo.user.PharmacistParamVO;
import com.naiterui.ehp.bs.pharmacist.vo.user.SignUserParamVO;

/**
 * @author guoyongxiang
 * @date 2019/12/4 21:57
 * @since 1.0.0
 */
public interface IPharmacistService {

    /**
     * CA用户认证状态通知
     * @param userId
     * @param status
     * @param reason
     */
    void userAuth(Long userId, Integer status, String reason) throws BusinessException;

    /**
     * 用户信息更新
     * @param paramVO
     * @return
     */
    Pharmacist update(String operator, PharmacistParamVO paramVO) throws BusinessException;

    /**
     * 用户创建
     * @param paramVO
     * @return
     */
    Pharmacist add(String operator, PharmacistParamVO paramVO) throws BusinessException;

    /**
     * 获取审核药师列表
     * @param count
     * @return
     * @throws BusinessException
     */
    List<PharmacistVO> getAuditPharmacist(Integer count) throws BusinessException;

    /**
     * 获取药师基础信息
     * @param pharmacistId
     * @return
     */
    PharmacistInfoBO getPharmacistInfo(Long pharmacistId);

    /**
     * CA用户回写CA生成的签章图片
     * @param sealImage
     * @param pharmacistId
     * @throws BusinessException
     */
    void perfectSealImage(String sealImage, Long pharmacistId) throws BusinessException;

    /**
     * 批量获取药师
     * @param pharmacistIds
     * @return
     */
    List<PharmacistInfoBO> getPharmacistInfoList(List<Long> pharmacistIds);

    /**
     * 修改药师账号状态0正常 1禁用
     * @param pharmacistId
     * @param status
     * @param operator
     */
    void updateAccountStatus(Long pharmacistId, Integer status, String operator);

    /**
     * 更新药师签章图片
     * 
     * @param pharmacistId
     * @param sealImg
     * @throws BusinessException
     */
    String saveSealImg(Long pharmacistId, MultipartFile sealImg) throws BusinessException;

    SignUserParamVO getUserByPhone(String phone) throws BusinessException;
}
